package dao;

import hbt.HibernateDAO;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import NegocioVO.EmpleadoVO;
import bean.EmpleadoBean;

public class EmpleadoDao {

	public void altaEmpleado(EmpleadoBean E)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		s.save(E);
		t.commit();
	}

	public EmpleadoBean getMozo(int nroMozo) {
		Session s = HibernateDAO.getInstancia().getSession();	
		Transaction t = s.beginTransaction();
		EmpleadoBean m =  (EmpleadoBean) s.createQuery("from EmpleadoBean m where idEmpleado = ? ").setInteger(0, nroMozo).uniqueResult();
		t.commit();
		return m;
	}

	public List<EmpleadoBean> listarMozos(int idLocal)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		@SuppressWarnings("unchecked")
		List<EmpleadoBean> mozos = s.createQuery("select e from LocalBean l inner join l.Areas a inner join a.empleados e where e in (from MozoBean) and a in (From SalonBean) and l.idLocal = ?").setInteger(0, idLocal).list();
		t.commit();
		return mozos;
		
	}
	
	public boolean validarEmpleadoContra(String UserID, String PassWord)
	{
		boolean encontrado = false;
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		EmpleadoBean claves = (EmpleadoBean) s.createQuery("FROM EmpleadoBean WHERE idUsuario=? AND password =?").setString(0, UserID).setString(1, PassWord).uniqueResult();
		t.commit();
        if(claves !=null){
            encontrado = true;
        }
		return encontrado;
		
	}
	
	public EmpleadoVO traerEmpleado(String UserID)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		EmpleadoBean empleado = (EmpleadoBean) s.createQuery("FROM EmpleadoBean WHERE idUsuario=?").setString(0, UserID).uniqueResult();
		System.out.println("Empleado del login==null: "+(empleado==null));
			
		t.commit();
		EmpleadoVO ret=new EmpleadoVO();
		if(empleado==null)
		{
			ret.setLogged(false);
			return ret;
		}	
		ret.setIdEmpleado(empleado.getIdEmpleado());
		ret.setLogged(true);
		ret.setApellido(empleado.getApellido());
		ret.setNombre(empleado.getNombre());
		ret.setIdUsuario(empleado.getIdUsuario());
		ret.setPassword(ret.getPassword());
		
		System.out.println("Traje empleado con nickname "+ret.getIdUsuario());
		
		return ret;
	}
	
	public int traerEmpleadoId(String UserID, String PassWord)
	{
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		int EmpleadoId = (Integer) s.createQuery("SELECT idEmpleado FROM EmpleadoBean WHERE idUsuario=? AND password =?").setString(0, UserID).setString(1, PassWord).uniqueResult();
		t.commit();
		return EmpleadoId;
	}

	public Integer BuscarLocalId(String userID, String passWord) {
		Session s = HibernateDAO.getInstancia().getSession();
		Transaction t = s.beginTransaction();
		int idLocal = (Integer) s.createQuery("SELECT l.idLocal from LocalBean l  inner join l.Areas a inner join a.empleados e WHERE e.idUsuario=? AND e.password =?").setString(0, userID).setString(1, passWord).uniqueResult();
		t.commit();
		return idLocal;
	}

}
